/**
 * Contem metodos estaticos que criam objeto do tipo Pessoa e insere-o no DBAcademia.
 */
package academia.negocio;

import academia.gui.cadastro.CadastroCliente;
import academia.persistencia.DBAcademia;
import academia.pessoal.Cliente;
import academia.pessoal.Instrutor;
import academia.pessoal.Pessoa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Renan
 */
public class Cadastro {
   
    
    public static void fillPessoa(String nome, String cpf, String nascimento,String telefone,
                                String cep, String endereco, String cidade, String bairro,
                                String senha, Pessoa pessoa){
        
                pessoa.setNome(nome);
		pessoa.setCpf(Integer.parseInt(cpf));
		
		pessoa.setNascimento(nascimento);
		pessoa.setTelefone(telefone);
		pessoa.setCep(cep);
		pessoa.setEndereco(endereco);
		
		pessoa.setCidade(cidade);
		pessoa.setBairro(bairro);
		pessoa.setSenha(senha);
    }
    
    public static Pessoa dadosInstrutor(String nome,String cpf,String nascimento,
                                String telefone,String cep,String endereco,
                                String cidade,String bairro,String senha,String cref){
		
		Instrutor pessoa = new Instrutor();
		
                fillPessoa(nome, cpf, nascimento, telefone, cep, endereco, cidade, bairro, senha, pessoa);
		pessoa.setCref(Integer.parseInt(cref));
		
		return pessoa;
	}
    public static Pessoa dadosCliente(String nome, String cpf, String nascimento,
                                String telefone, String cep, String endereco,
                                String cidade, String bairro,String senha) {
			
		Cliente pessoa = new Cliente();
		
                fillPessoa(nome, cpf, nascimento, telefone, cep, endereco, cidade,
                            bairro, senha, pessoa);

		return pessoa;

    }
    
    public static void cadastrar(Pessoa pessoa){
        Connection conn=null;
        ResultSet rs =null;
        PreparedStatement ps=null;
        
        conn=DBAcademia.ConnectDB();
        
       
        try{
             String sql="INSERT INTO Pessoa(Nome,Cpf,Senha,Tipo,Telefone,Cidade,Bairro,Endereco,Cep,Nascimento,Cref,Pagamento) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
             ps=conn.prepareStatement(sql);
             ps.setString(1,pessoa.getNome());
             ps.setInt(2,pessoa.getCpf());
             ps.setString(3,pessoa.getSenha());
             ps.setString(4,pessoa.getTipo());
             ps.setString(5,pessoa.getTelefone());
             ps.setString(6,pessoa.getCidade());
             ps.setString(7,pessoa.getBairro());
             ps.setString(8,pessoa.getEndereco());
             ps.setString(9,pessoa.getCep());
             ps.setString(10,pessoa.getNascimento());
             if (pessoa.getTipo().equals("Instrutor")){
                 Instrutor instrutor = (Instrutor) pessoa;
                 ps.setInt(11,instrutor.getCref());
             }else {
                 ps.setString(11,null);
             }
             if(pessoa.getTipo().equals("Cliente")){
                 Cliente cliente = (Cliente) pessoa;
                 ps.setBoolean(12, cliente.getPagamento());
             }
             
             ps.execute();
             JOptionPane.showMessageDialog(null,"Cadastro efetuado com Sucesso.");
             }catch(SQLException a){
                   JOptionPane.showMessageDialog(null,a);
               }
                finally{
                     try {
                       rs.close();
                       ps.close();
                         } catch (SQLException ex) {
                                Logger.getLogger(CadastroCliente.class.getName()).log(Level.SEVERE, null, ex);
                           } 
                }
	}
    
}
